Remote Direct Memory Access (RDMA) is a direct memory access mechanism that enables a computer to access memory from another computer without involving the computers' operating systems. RDMA supports zero-copy networking by enabling a network adapter to transfer data directly to or from application memory, eliminating the need to copy data between application memory and the data buffers in the operating system. Such transfers require no work to be done by CPUs, caches, or context switches, and transfers continue in parallel with other system operations. When an application performs an RDMA Read or Write request, the application data is delivered directly to the network (via appropriate hardware), reducing latency and enabling fast message transfer.
Current RDMA-enabled network adapters such as Internet Wide Area RDMA Protocol (iWARP) RDMA Network Interface Controllers (RNICs) or InfiniBand HCAs (Host Channel Adapters) allow applications to communicate with hardware directly from the application address space. This is enabled by supporting numerous hardware queues—Send Queues (SQ) and Receive Queues (RQ) that can be mapped and directly accessed from the application address space through use of Memory Mapped Input/Output (MMIO) in the RNIC or HCA. Every time an application posts a new transmit or receive work request (WR), this request is added to the respective SQ or RQ by the user space library supplied by the hardware provider.
On one level, the RDMA architecture is designed to provide an abstraction between RDMA interfaces and the underlying network technology (e.g., Ethernet and InfiniBand). For example, the Remote Direct Memory Access Protocol (RDMAP) is designed to operate over the Direct Data Placement Protocol (DDP), which in turn interfaces (with other lower layers) to the RNIC or HCA. Ideally, the RDMAP should expose a consistent interface to applications in a network-technology agnostic manner, thereby enabling the same application to implement RDMA on any network technology that supports RDMA. However, various network technology-specific extensions have been added to various RDMA specifications over the years, resulting in some level of fragmentation.
One example of such fragmentation concerns support for RDMA Read operations. iWARP was originally specified with different RDMA Read semantics than other RDMA capable technologies. This created an application-visible difference between iWARP and other RDMA technologies such as InfiniBand. Accordingly, it would be advantageous to add extended RDMA Read operations to iWARP.